package pc.ads.ifpi.edu.br;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestesSistemaCalculoSalarioFuncionarios {
	
@Test
	
	public void deveCalcularSalarioDeDesenvolvedoreComSalarioMaiorOuIgualA3000() {
	
		CalculoSalarioFuncionario calculadora = new CalculoSalarioDesenvolvedor();
			
		Funcionario desenvolvedor = new Funcionario ("Gildeon","email@.com", 4000.0, Cargo.desenvolvedor);
		double salario = calculadora.calculaSalario(desenvolvedor);
		assertEquals(4000.0 * 0.8, salario, 0.0);
		
		}
	
@Test
	
	public void deveCalcularSalarioDeDesenvolvedoreComSalarioMenorQue3000() {
	
		CalculoSalarioFuncionario calculadora = new CalculoSalarioDesenvolvedor();
			
		Funcionario desenvolvedor = new Funcionario ("Joao","email@.com", 2000.0, Cargo.desenvolvedor);
		double salario = calculadora.calculaSalario(desenvolvedor);
		assertEquals(2000.0 * 0.9, salario, 0.0);
		
		}
	
@Test

public void deveCalcularSalarioDeDbaComSalarioMaiorOuIgualA2000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioDba();
		
	Funcionario dba = new Funcionario ("Maria","email@.com", 4000.0, Cargo.dba);
	double salario = calculadora.calculaSalario(dba);
	assertEquals(4000.0 * 0.75, salario, 0.0);
	
	}

@Test

public void deveCalcularSalarioDeDesenvolvedoreComSalarioMenorQue2000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioDba();
		
	Funcionario dba = new Funcionario ("Paulo","email@.com", 1000.0, Cargo.dba);
	double salario = calculadora.calculaSalario(dba);
	assertEquals(1000.0 * 0.85, salario, 0.0);
	
	}

@Test

public void deveCalcularSalarioDeTestadorComSalarioMaiorOuIgualA2000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioTestador();
		
	Funcionario testador = new Funcionario ("Maria","email@.com", 4000.0, Cargo.testador);
	double salario = calculadora.calculaSalario(testador);
	assertEquals(4000.0 * 0.75, salario, 0.0);
	
	}

@Test

public void deveCalcularSalarioDeTestadoreComSalarioMenorQue2000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioTestador();
		
	Funcionario testador = new Funcionario ("Paulo","email@.com", 1000.0, Cargo.testador);
	double salario = calculadora.calculaSalario(testador);
	assertEquals(1000.0 * 0.85, salario, 0.0);
	
	}

@Test

public void deveCalcularSalarioDeGerenteComSalarioMaiorOuIgualA5000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioGerente();
		
	Funcionario gerente = new Funcionario ("Maria","email@.com", 6000.0, Cargo.gerente);
	double salario = calculadora.calculaSalario(gerente);
	assertEquals(6000.0 * 0.70, salario, 0.0);
	
	}

@Test

public void deveCalcularSalarioDeGerenteComSalarioMenorQue5000() {

	CalculoSalarioFuncionario calculadora = new CalculoSalarioGerente();
		
	Funcionario gerente = new Funcionario ("Joao Paulo","email@.com", 1000.0, Cargo.gerente);
	double salario = calculadora.calculaSalario(gerente);
	assertEquals(1000.0 * 0.80, salario, 0.0);
	
	}
	}

